model-section.module.css 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. [data-slot="models-list"] {
  2. display: flex;
  3. flex-direction: column;
  4. }
  5. [data-slot="models-table"] {
  6. overflow-x: auto;
  7. }
  8. [data-slot="models-table-element"] {
  9. width: 100%;
  10. border-collapse: collapse;
  11. font-size: var(--font-size-sm);
  12. thead {
  13. border-bottom: 1px solid var(--color-border);
  14. }
  15. th {
  16. padding: var(--space-3) var(--space-4);
  17. text-align: left;
  18. font-weight: normal;
  19. color: var(--color-text-muted);
  20. text-transform: uppercase;
  21. }
  22. td {
  23. padding: var(--space-3) var(--space-4);
  24. border-bottom: 1px solid var(--color-border-muted);
  25. color: var(--color-text-muted);
  26. font-family: var(--font-mono);
  27. &[data-slot="model-name"] {
  28. color: var(--color-text);
  29. font-family: var(--font-mono);
  30. font-weight: 500;
  31. }
  32. &[data-slot="training-data"] {
  33. text-align: center;
  34. color: var(--color-text);
  35. }
  36. &[data-slot="model-toggle"] {
  37. text-align: left;
  38. font-family: var(--font-sans);
  39. }
  40. [data-slot="model-toggle-label"] {
  41. /* Toggle container */
  42. position: relative;
  43. display: inline-block;
  44. width: 2.5rem;
  45. height: 1.5rem;
  46. cursor: pointer;
  47. /* Hidden checkbox input */
  48. input {
  49. opacity: 0;
  50. width: 0;
  51. height: 0;
  52. }
  53. /* Toggle track (background) */
  54. span {
  55. position: absolute;
  56. inset: 0;
  57. background-color: #ccc;
  58. border: 1px solid #bbb;
  59. border-radius: 1.5rem;
  60. transition: all 0.3s ease;
  61. cursor: pointer;
  62. /* Toggle handle (slider) */
  63. &::before {
  64. content: "";
  65. position: absolute;
  66. top: 50%;
  67. left: 0.125rem;
  68. width: 1.25rem;
  69. height: 1.25rem;
  70. background-color: white;
  71. border: 1px solid #ddd;
  72. border-radius: 50%;
  73. transform: translateY(-50%);
  74. transition: all 0.3s ease;
  75. }
  76. }
  77. /* Checked state - track */
  78. input:checked+span {
  79. background-color: #21AD0E;
  80. border-color: #148605;
  81. /* Checked state - handle */
  82. &::before {
  83. transform: translateX(1rem) translateY(-50%);
  84. }
  85. }
  86. /* Hover states */
  87. &:hover span {
  88. box-shadow: 0 0 0 2px rgba(34, 197, 94, 0.2);
  89. }
  90. input:checked:hover+span {
  91. box-shadow: 0 0 0 2px rgba(34, 197, 94, 0.3);
  92. }
  93. /* Disabled state */
  94. &:has(input:disabled) {
  95. cursor: not-allowed;
  96. }
  97. input:disabled+span {
  98. opacity: 0.5;
  99. cursor: not-allowed;
  100. }
  101. input:disabled:checked+span {
  102. opacity: 0.5;
  103. }
  104. input:disabled~span:hover {
  105. box-shadow: none;
  106. }
  107. }
  108. }
  109. tbody tr {
  110. &:last-child td {
  111. border-bottom: none;
  112. }
  113. &[data-disabled="true"] {
  114. td[data-slot="model-name"] {
  115. color: var(--color-text-muted);
  116. }
  117. }
  118. }
  119. }
  120. @media (max-width: 40rem) {
  121. [data-slot="models-table-element"] {
  122. th,
  123. td {
  124. padding: var(--space-2) var(--space-3);
  125. font-size: var(--font-size-xs);
  126. }
  127. th {
  128. &:nth-child(2)
  129. /* Training Data */
  130. {
  131. display: none;
  132. }
  133. }
  134. td {
  135. &:nth-child(2)
  136. /* Training Data */
  137. {
  138. display: none;
  139. }
  140. }
  141. }
  142. }